﻿using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("--------------------ref------------------------");
            //            1、定义一个方法，求一个整数数组中的最大值，最小值，和，平均数。
            //            如果是一个方法只能有一个返回值，那只能每一个都得定义一个方法来实现，不过有了ref和out这实现起来就方便多了。
            //参考步骤：
            //定义一个一维数组，数组中存放一些数据（控制台输入）。
            //定义几个变量：max、min、sum、avg
            //定义一个方法，方法返回数组元素之和,方法形参有max min avg。
            //请用ref和out各做一遍，并在注释中，描述他们的区别。
            int[] arr = { 1, 2, 3 };
            for (int i = 0; i < arr.Length; i++)
            {
                Console.WriteLine("请输入一个数字");
                arr[i] = int.Parse(Console.ReadLine());
            }
            int max = arr[0];
            int min = arr[0];
            int sum = 0;
            double avg = 0;
            Text(ref arr, ref max, ref min, ref sum, ref avg);


        //    Console.WriteLine("------------------out---------------------------------");
        //    int max ;
        //    int min ;
        //    int sum ;
        //    int avg ;
        //    Text2(out max, out min, out sum, out avg);
        //    Console.WriteLine("最大值 {0}，最小值 {1} ，和 {2} ，平均数{3}", max, min, sum, avg);
        }

        //ref
        public static void Text(ref int[] arr, ref int max, ref int min, ref int sum, ref double avg)
        {
            for (int i = 0; i < arr.Length; i++)
            {
                if (arr[i] > max)
                {
                    max = arr[i];
                }
                if (arr[i] < min)
                {
                    min = arr[i];
                }
                sum += arr[i];
            }
            avg = sum * 1.0 / arr.Length;
            Console.WriteLine("最大值 {0}，最小值 {1} ，和 {2} ，平均数{3}", max, min, sum, avg);
        }

        //out
        //public static void Text2( out int max, out int min, out int sum, out int avg)
        //{
        //    int [] arr = { 1,2,5};
            
        //    max = 0;
        //    min = 0;
        //    sum = 0;
        //    avg = 0;
        //    for (int i = 0; i < arr.Length; i++)
        //    {
        //        if (arr[i] > max)
        //        {
        //            max = arr[i];
        //        }
        //        if (arr[i] < min)
        //        {
        //            min = arr[i];
        //        }
        //        sum += arr[i];
        //    }
        //    avg = sum  / arr.Length;
        //}
    }
}
